package com.eastfair.config.vo;

import com.eastfair.annotation.annotation.LanguageConvert.LanguageEntityConvert;
import com.eastfair.annotation.annotation.LanguageConvert.LanguagePrimary;
import com.eastfair.annotation.annotation.LanguageConvert.LanguagePrimitiveConvert;
import com.eastfair.annotation.base.LanguageTypeEnum;
import com.eastfair.annotation.base.SupplementFieldEnum;
import com.eastfair.config.enumeration.FormFieldFieldGroupEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;


/**
 * <p>
 * 实体类
 *
 * </p>
 *
 * @author zjn
 * @since 2021-08-10
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "FormFieldVO", description = "表单类")
@LanguageEntityConvert
public class FormFieldVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    private Long id;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    private Long exhibitionId;
    /**
     * 使用主体
     */
    @ApiModelProperty(value = "使用主体")
    private String subjectType;
    /**
     * 语言环境
     */
    @ApiModelProperty(value = "语言环境")
    private String languageType;
    /**
     * 字段名称
     */
    @LanguagePrimary
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.NAME, languageType = LanguageTypeEnum.CN)
    @ApiModelProperty(value = "字段名称")
    private String fieldName;
    /**
     * 字段英文名称
     */
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.NAME, languageType = LanguageTypeEnum.EN)
    @ApiModelProperty(value = "字段英文名称")
    private String fieldEnName;
    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字")
    private String keyword;
    /**
     * 对象VO类名
     */
    @ApiModelProperty(value = "对象VO类名")
    private String className;
    /**
     * 字段类型
     */
    @ApiModelProperty(value = "字段类型")
    private String fieldType;
    /**
     * 字段类型属性
     */
    @ApiModelProperty(value = "字段类型属性")
    private String fieldTypeAttribute;
    /**
     * 字段类型属性值
     */
    @ApiModelProperty(value = "字段类型属性值")
    private String fieldTypeAttributeValue;
    /**
     * 标签键名
     */
    @ApiModelProperty(value = "标签键名")
    private String labelKey;

    /**
     * 值键名
     */
    @ApiModelProperty(value = "值键名")
    private String labelValueKey;

    /**
     * 子集键名
     */
    @ApiModelProperty(value = "子集键名")
    private String childrenKey;
    /**
     * 提示语
     */
    @LanguagePrimary
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.ALIAS, languageType = LanguageTypeEnum.CN)
    @ApiModelProperty(value = "提示语")
    private String placeholder;
    /**
     * 英文提示语
     */
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.ALIAS, languageType = LanguageTypeEnum.EN)
    @ApiModelProperty(value = "英文提示语")
    private String enPlaceholder;
    /**
     * 字段描述
     */
    @LanguagePrimary
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.INTRODUCTION, languageType = LanguageTypeEnum.CN)
    @ApiModelProperty(value = "字段描述")
    private String fieldDesc;
    /**
     * 字段英文描述
     */
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.INTRODUCTION, languageType = LanguageTypeEnum.EN)
    @ApiModelProperty(value = "字段英文描述")
    private String fieldEnDesc;
    /**
     * 字数限制
     */
    @ApiModelProperty(value = "字数限制")
    private Integer inputLength;
    /**
     * 宽度
     */
    @ApiModelProperty(value = "宽度")
    private Integer inputWidth;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sequence;
    /**
     * 分组
     */
    @ApiModelProperty(value = "分组")
    private FormFieldFieldGroupEnum fieldGroup;
    /**
     * 示例图片
     */
    @ApiModelProperty(value = "示例图片")
    private String legend;
    /**
     * 示例图片描述
     */
    @LanguagePrimary
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.DESCRIBE, languageType = LanguageTypeEnum.CN)
    @ApiModelProperty(value = "示例图片描述")
    private String legendDesc;
    /**
     * 示例图片英文描述
     */
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.DESCRIBE, languageType = LanguageTypeEnum.EN)
    @ApiModelProperty(value = "示例图片英文描述")
    private String legendEnDesc;
    /**
     * 是否可编辑：1是；0否
     */
    @ApiModelProperty(value = "是否可编辑：1是；0否")
    private Integer isEdit;
    /**
     * 是否必填：1是；0否
     */
    @ApiModelProperty(value = "是否必填：1是；0否")
    private Integer isRequired;
    /**
     * 是否多选：1是；0否
     */
    @ApiModelProperty(value = "是否多选：1是；0否")
    private Integer isMultiple;
    /**
     * 是否是线下预登记字段：1是；0否
     */
    @ApiModelProperty(value = "是否是线下预登记字段：1是；0否")
    private Integer isOffline;
    /**
     * 是否需要验证
     */
    @ApiModelProperty(value = "是否需要验证：1是；0否")
    private Integer isVerification;
    /**
     * 验证关键字
     */
    @ApiModelProperty(value = "验证关键字")
    private String verificationKeyword;

    /**
     * 是否有提示信息：1是；0否
     */
    @ApiModelProperty(value = "是否有提示信息：1是；0否")
    private Integer isTips;

    /**
     * 中文提示信息
     */
    @ApiModelProperty(value = "中文提示信息")
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.TIPS, languageType = LanguageTypeEnum.CN)
    private String tips;

    /**
     * 英文提示信息
     */
    @ApiModelProperty(value = "英文提示信息")
    @LanguagePrimitiveConvert(fieldType = SupplementFieldEnum.TIPS, languageType = LanguageTypeEnum.EN)
    private String enTips;

    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    private Integer isEnabled;
    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    private Integer isDeleted;
    /**
     * 是否用于预登记：1是；0否
     */
    @ApiModelProperty(value = "是否用于完善信息：1是；0否")
    private Integer isPerfectInfo;
    /**
     * 是否用于详情：1是；0否
     */
    @ApiModelProperty(value = "是否用于详情：1是；0否")
    private Integer isDetails;
    /**
     * 前缀名称
     */
    @LanguagePrimary
    private String prefixName;
    /**
     * 前缀关键字
     */
    @ApiModelProperty(value = "前缀关键字")
    private String prefixKeyword;
    /**
     * 前缀属性
     */
    @ApiModelProperty(value = "前缀属性")
    private String prefixAttribute;
    /**
     * 前缀属性值
     */
    @ApiModelProperty(value = "前缀属性值")
    private String prefixAttributeValue;
    /**
     * 前缀标签键名
     */
    @ApiModelProperty(value = "前缀标签键名")
    private String prefixLabelKey;
    /**
     * 前缀值键名
     */
    @ApiModelProperty(value = "前缀值键名")
    private String prefixLabelValueKey;

    /**
     * 前缀子集键名
     */
    @ApiModelProperty(value = "前缀子集键名")
    private String prefixChildrenKey;
    /**
     * 前缀开关
     */
    @ApiModelProperty(value = "前缀开关")
    private Integer isPrefix;
    /**
     * 后缀名称
     */
    @ApiModelProperty(value = "后缀名称")
    private String suffixName;
    /**
     * 后缀关键字
     */
    @ApiModelProperty(value = "后缀关键字")
    private String suffixKeyword;
    /**
     * 后缀属性
     */
    @ApiModelProperty(value = "后缀属性")
    private String suffixAttribute;
    /**
     * 后缀属性值
     */
    @ApiModelProperty(value = "后缀属性值")
    private String suffixAttributeValue;
    /**
     * 后缀标签键名
     */
    @ApiModelProperty(value = "后缀标签键名")
    private String suffixLabelKey;
    /**
     * 后缀值键名
     */
    @ApiModelProperty(value = "后缀值键名")
    private String suffixLabelValueKey;
    /**
     * 后缀子集键名
     */
    @ApiModelProperty(value = "后缀子集键名")
    private String suffixChildrenKey;
    /**
     * 后缀开关
     */
    @ApiModelProperty(value = "后缀开关")
    private Integer isSuffix;

}
